﻿/************************************************************************
** 文  件：
**	DbSqlite.h
** 功  能：
**	提供Sqlite数据库操作基本封装
** 作  者：
**	email:lixx2048@163.com
**  wechat:lixiang6153
**  QQ:941415509
** 日  期：
**	2020/10/15	14:00:00
** 说  明：
**	无
** 版  本：
**	2020/10/15	14:00:00		1.0		lixx2048@163.com
/************************************************************************/
#pragma once
#include "IDbBase.h"
#include "sqlite3.h"

class CDbSqlite : public IDbBase
{
public:
	CDbSqlite(void);
	virtual ~CDbSqlite(void);

public:
	virtual bool Open(const char* ip, int port, const char* user, const char* pwd, const char* name);
	virtual void Close(void);
	virtual bool IsTableExist(const char* tbname);
	virtual bool CreateTable(const char* sql);
	virtual bool Exec(const char* sql);
	virtual bool IsProcedureExist(const char* dbname, const char* procname);
	virtual bool CreateProcedure(const char* sql);
	virtual uint64_t Insert(const char* sql);
	virtual bool Delete(const char* sql);
	virtual bool Update(const char* sql);
	virtual bool Query(const char* sql);
	virtual void FreeQueryResult(void);
	virtual bool FetchNextRow(void);
	virtual long GetRowCount();
	virtual int GetColCount();
	virtual char* GetColValue(int nCol);
	virtual const char* GetErrorMessage();

protected:
	bool _Exec(const char* sql);

private:
	sqlite3* m_pDb;
	sqlite3_stmt* m_pVM;
};